// 图片上传服务器
const express = require("express")
const app = express()
const port = 9000//图片上传服务器的端口号
const Response = require("./utils/ResponseData.js")

// 引入cors模块
const cors = require("cors")
app.use(cors({
    // 允许跨域的服务器地址,可以写多个(就是vue工程的服务地址)
    origin: "*"
}))

// 配置multer文件上传中间件配置
const multer = require("multer")
// uuid动态生成不重名的图片
const uuid = require("uuid")
// 配置上传参数
const uploadTools = multer({
    storage: multer.diskStorage({ //该存储方案将会把文件直接存入磁盘
        destination: (req, file, callback) => { //处理存储
            callback(null, "static")
        },
        filename: (req, file, callback) => { //处理文件名,对文件名重命名,防止出现重名文件
            // 通过file获取原始文件名,比如xxx.jpeg
            let name = file.originalname
            // 截取文件扩展名
            let ext = name.substr(name.lastIndexOf("."))
            // 通过uuid生成一个十六进制的随机文件名
            let newName = uuid.v4() + ext
            // 通过callback进行重新设置
            callback(null, newName)
        }
    })
})
// 配置static目录为静态资源托管文件夹,这样就可以直接通过"http://localhost:9000/文件名"访问static目录下的资源
app.use(express.static("static"))

// 配置上传请求
// 上传action:"http://localhost:9000/upload"
app.post("/upload", uploadTools.single("file"), (req, res) => {
    // 这是需要响应给前端的图片的地址
    let url = "http://47.92.27.111:9000/" + req.file.filename
    console.log(url);
    res.send(Response.success(url, "图片上传成功!"))
})

// 监听服务器启动状态
app.listen(port, () => {
    console.log("文件上传服务启动成功...");
})

